Pular para o conteúdo principal

Condicionais

É importante saber que tudo em Ruby acaba com end.

if..else

if é uma estrutura de controle que executa uma determinada ação caso uma condição seja verdadeira.

else é uma estrutura de controle que executa uma determinada ação caso uma condição seja falsa.

r = "Ruby"

if r == "Ruby"
puts "É Ruby"
else
puts "Não é Ruby"
end

Executando:

=> É Ruby

elsif

elsif é um else junto com if.

r = "PHP"

if r == "Ruby"
puts "É Ruby"
elsif r == "PHP"
puts "É PHP"
else
puts "Não é Ruby nem PHP"
end

Executando:

=> É PHP

unless

unless é o contrário do if e ele é utilizado para negar uma condição e executar o bloco caso a condição seja falsa.

r = "PHP"

unless r == "Ruby"
puts "Não é Ruby"
else
puts "É Ruby"
end

Executando:

=> Não é Ruby

Esse tipo de código é bem confuso, as vezes é melhor fazer um bom teste positivo (if).

case

case é utilizado para executar um bloco de código de acordo com uma condição. É possível utilizar mais de uma condição. Podemos utilizar o case para fazer algumas comparações interessantes.

r = "JavaScript"

case r
when "Ruby"
puts "É Ruby"
when "PHP"
puts "É PHP"
else
puts "Não é Ruby nem PHP"
end

Executando:

=> Não é Ruby nem PHP

for

for é utilizado para executar um bloco de código de acordo com um determinado número de vezes. É possível utilizar o for para fazer algumas repetições interessantes.

for i in 1..10
puts i
end

Executando:

=> 1 2 3 4 5 6 7 8 9 10

while

while é utilizado para executar um bloco de código enquanto uma condição for verdadeira. (Faça enquanto).

r = "JavaScript"

while r != "Ruby"
puts "Não é Ruby"
end

Executando:

=> Não é Ruby

Se não interromper com Ctrl+C, esse código vai ficar funcionando para sempre.

until

until é utilizado para executar um bloco de código enquanto uma condição for falsa. (Faça até que).

i = 0

until i == 7
puts i
i += 1
end

Executando:

=> 0 1 2 3 4 5 6

loop

Interações dentro de um loop:

  1. break - sai do loop
  2. next - vai para a próxima iteração
  3. redo - repete o loop do início, sem reavaliar a condição ou pegar o próximo elemento

Vamos utilizar essas interações:

break

for i in (0..77)
break if i == 4
puts i
end

Executando:

=> 0 1 2 3

next

for i in (0..77)
next if i == 4
puts i
end

Executando:

=> 0 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77

redo

for i in (0..77)
redo if i == 4
puts i
end

Executando:

=> 0 1 2 3

Se não interromper com Ctrl+C, esse código vai ficar funcionando para sempre.